package com.triadsystems.cashweb.modelo.negocio.servicos.impl;

import java.util.Collection;

import javax.inject.Named;

import com.icon.infra.modelo.negocio.excecoes.ConsultaInvalidaException;
import com.icon.infra.modelo.negocio.excecoes.MultiplosResultadosParaRecuperarObjetoException;
import com.icon.infra.modelo.negocio.excecoes.ObjetoNaoEncontradoException;
import com.icon.infra.modelo.persistencia.dao.impl.DAOHibernateTemplate;
import com.triadsystems.cashweb.modelo.negocio.servicos.IMovimentacaoServico;
import com.triadsystems.cashweb.modelo.persistencia.entidades.Caixa;
import com.triadsystems.cashweb.modelo.persistencia.entidades.Movimentacao;
@Named
public class MovimentacaoServico extends DAOHibernateTemplate<Movimentacao> implements
		IMovimentacaoServico {
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public Collection getMovimentacoesByCaixa(Caixa caixa) throws ObjetoNaoEncontradoException, ConsultaInvalidaException {
		String hql ="from Movimentacao c" +
				" where c.caixa = :caixa order by c.dtaMovimentacao";
		
		String[] params = { "caixa" };
		Object[] valores = { caixa };
			
		Collection<Movimentacao> recuperarObjetosPorHQL = recuperarObjetosPorHQL(hql, params, valores);
		return recuperarObjetosPorHQL;
	}

	@Override
	public Movimentacao getMovimentacaoByCaixaBoleto(Caixa caixa,
			String codBoleto) throws MultiplosResultadosParaRecuperarObjetoException, ObjetoNaoEncontradoException, ConsultaInvalidaException {

		String stringHQL ="from Movimentacao c" +
				" where c.caixa = :caixa" +
				" and c.codBarra = :codBoleto";
		
		String[] params = { "caixa","codBoleto" };
		Object[] valores = { caixa,codBoleto };
			
		Movimentacao movimentacao = (Movimentacao) recuperarObjetoPorHQL(stringHQL, params, valores);
		return movimentacao;
	}
	

}
